Cette seconde étape du projet consiste à étiqueter les données désormais
récupérées et nettoyées. Ces données sont imprimées dans un format texte
brut et un XML. Nous utilisons alors un programme d’étiquetage pour chacun
de ces formats : Treetagger pour le XML et Cordial pour le texte
brut.
Pour que le fichier de sortie .xml corresponde à un fichier xml, il nous
faut imprimer l’entête et les balises qui ouvrent le fichier :
print OUT1 "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
print OUT1 "<PARCOURS>\n";
print OUT1 "<NOM>BLANCHARD DUFOUR</NOM>\n";
print OUT1 "<FILTRAGE>\n";
Et quand le traitement est fini, il ne faut surtout pas oublier de les
refermer sinon l’arborescence sera incomplète et le fichier non valide :
print OUT1 "</FILTRAGE>\n";
print OUT1 "</PARCOURS>\n";
Afin de rendre l’étiquetage faisable, nous avons trié les données par
rubriques. Il y en a 17 dans les fils RSS de 2014. Il a suffi pour cela,
de créer une nouvelle variable $rub, que nous spécifions en ligne de
commande et que nous intégrons au test avant d’ouvrir le fichier. Si le
nom du fichier contient le numéro de la rubrique, alors le traitement peut
se faire.
if (($file =~ /.+-$rub.+\.xml$/) and (-s $file !=0))
Liste des rubriques :
3208 = A la Une, 3210 = International, 3214 = Europe, 3224 = Société, 3232
= Idées, 3234= Economie, 3236 = Médias,
3238= Vous, 3242 = Sport, 3244 = Planète, 3246 = Culture, 3260 = Livres,
3404= à la une, 3476 = Cinéma, 3546 = Voyage, 651865 = Technologies,
0,57-0,64-823353 = Politique.
Cordial a pour avantage d’être beaucoup plus rapide que Treetagger mais il
a aussi des inconvénients. Il ne prend pas les fichiers de plus de 2 Mo et
ne prends pas en charge l’utf-8. De plus, nous devons étiqueter en dehors
du programme, sur un autre ordinateur. Cependant, il segmente lui-même le
fichier.
Pour ce qui est de Treetagger, il lui faut un fichier avec un mot par
ligne. Pour cela, nous avons préalablement tokénisé nos contenus. Mais
tout l’étiquetage à l’aide de Treetagger peut se faire en ligne de
commande et donc être intégré à notre script avec la fonction system. En
tout, nous lançons 3 programmes différents pour treetagger : le tokeniser,
le parser et le programme treetagger2xml.pl pour remettre au format xml.
Pour spécifier l’encodage du fichier de sortie .xml ou .txt :
my $encodagesortie2="iso-8859-1"; # ou utf-8
if (!open (OUT2,">:encoding($encodagesortie2)", $output2))
La procedure étiquetage par Treetagger:
Le $titre et le $description sont envoyés à la procédure dans cet ordre. 2
variables locales homonymes sont créées et prennent leurs valeurs. Des
variables $titreetiquete et $descriptionetiquete sont initialisées à la
chaîne vide mais seront retournées au programme pleines une fois que les
données seront étiquetées. On crée un fichier « texteetiquete.txt » où on
imprime le titre ou la description et qu'on met en argument pour le 1er
programme de tokenisation à lancer. On ouvre ensuite le dernier fichier
produit à la suite des 3 programmes, on lit la première ligne d’entête xml
pour ne pas l’imprimer dans le fichier global et on imprime le reste dans
la variable de retour.
Nous avons un script pour chaque étiquetage et un pour les deux sorties :
SCRIPTS :
script 2 en 1
2 en 1 avec regex
script pour cordialiser
script pour treetagger
RESULTATS :
sortie pour Cordial
sortie treetagger
sortie étiquetée par Cordial
Précision au sujet du fichier de sortie
étiqueté par tree-tagger : si le navigateur affiche des retours à
la ligne après chaque élément <data>, en réalité, le fichier de
sortie présente tous les éléments au sein de la balise <element> sur
une ligne, structure nécessaire pour être reconnue par les expressions
régulières contenues dans l'une des méthodes d'extraction de patrons
morphosyntaxiques que nous allons vous présenter dans la baO3.